package com.monkey.banana.game.shudu;

import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.View;

import com.monkey.banana.R;

/**
 * Description:
 * Author: Archur
 * Date: 2017-09-16
 * Time: 10:04
 */


public class KeyDialog extends Dialog {

    // 用来存放代表对话框当中按钮的对象
    private View[] keys = new View[9];
    // 该单元格不可用的数字
    private int[] used;
    // ShuduView的实例
    private ShuduView shuduView = null;

    /**
     * 构造方法传入ShuduView的实例 和 该单元格不可用的数字
     */
    public KeyDialog(Context context, int[] used, ShuduView shuduView) {
        super(context);
        this.used = used;
        this.shuduView = shuduView;
    }

    /**
     * 当一个dialog第一次显示的时候，会调用其oncreate方法
     */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //设置对话框的标题
        setTitle("请选择数字");
        //用于为该dialog设置布局文件。
        setContentView(R.layout.keypad);
        findViews();//把按钮对象添加到keys数组中

        //遍历整个used数组，已经使用过的数字就让它隐藏。
        for (int i = 0; i < used.length; i++) {
            if (used[i] != 0) {
                keys[used[i]-1].setVisibility(View.INVISIBLE);
            }
        }
        //为对话框当中所有的按钮设置监听器
        setListeners();
    }


    /**
     * 找出9个数字View
     */
    private void findViews() {
        keys[0] = findViewById(R.id.keypad_1);
        keys[1] = findViewById(R.id.keypad_2);
        keys[2] = findViewById(R.id.keypad_3);
        keys[3] = findViewById(R.id.keypad_4);
        keys[4] = findViewById(R.id.keypad_5);
        keys[5] = findViewById(R.id.keypad_6);
        keys[6] = findViewById(R.id.keypad_7);
        keys[7] = findViewById(R.id.keypad_8);
        keys[8] = findViewById(R.id.keypad_9);
    }

    /**
     * 监听9个数字View的点击事件
     */
    private void setListeners() {

        //遍历整个数组。
        for (int i = 0; i < keys.length; i++) {
            final int t = i + 1;//用T表示用户点击的数字。
            //为每一个按钮设置监听器。
            keys[i].setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    returnResult(t);
                }
            });
        }
    }

    /**
     * 把用户点击的数字传到ShuduView中去,并刷新UI
     */
    public void returnResult(int tile) {
        shuduView.setSelectedTile(tile);
        dismiss();//取消对话框的显示。
    }
}
